UnityのDeviceビルドをSimulatorビルドに換装する


概要

適宜Simulator版とDevice版を動かし分けたい。

具体的に言うと、

・Simu版をサーバで動かしてCI

・そこからDevice版を実機転送で動かして遠隔実機CI


などがしたい。


ので、片方からもう一方が作れないか試してみた。

特にDevice版からSimulator版、その後またDeviceに戻す、というのをやってみた感じ。



差異

DeviceビルドとSImulatorビルドの差異は、下記のフォルダにのみある。


Libraries/

Assembly-CSharp-firstpass.dll.s

Assembly-CSharp.dll.s

Assembly-UnityScript-firstpass.dll.s

Assembly-UnityScript.dll.s

mscorlib.dll.s



Data/Managed/

Assembly-CSharp-firstpass.dll.mdb

Assembly-CSharp.dll.mdb

Assembly-UnityScript-firstpass.dll.mdb

Assembly-UnityScript.dll.mdb


PROJECT.xcodeproj/

project.pbxproj

ここの特定の設定項目を変える必要がある。(ビルド自体にも影響)



Libraries/以下

フォルダごと入れ替える事で解決できる。



Data/Managed/以下

フォルダごと入れ替えることで解決。

実はアプリが起動するまで全く触られないらしく、無くても動く。


無い場合は起動後に落ちる。

その際のエラーは

Failed to load AOT module 'Assembly-CSharp-firstpass' while running in aot-only mode.



PROJECT.xcodeproj/の内容変更

を変更する前に、タブでDevice/Simulatorとかが選べるようにする。

プロジェクトアイコン > Build Settings >

SupporterPlatform で、iOSを選択。

スクリーンショット 2012-12-01 18.38.37.png


スクリーンショット 2012-12-01 18.38.42.png

独自に文字書いてあるのを変更。

Scheme から、Simulatorが選べるようになるはず。

スクリーンショット 2012-12-01 18.41.01.png

加えて、一番大事な、


OTHER_CFLAGS = -mno-thumb


を、


OTHER_CFLAGS = -DTARGET_IPHONE_SIMULATOR=1


に変える。



(SimulatorをDeviceにするのではなく、

Deviceを一度Simulator化したものを再度Device化する話。)


LibraryとDataを変更、

OTHER_CFLAGS = -DTARGET_IPHONE_SIMULATOR=1

を、


OTHER_CFLAGS = -mno-thumb 

に戻す。



加えて、Debug Informationも弄る必要が有る


Debug Information Format = DWARF with dSYM File

になっているのを、

Debug Information Format = DWARF 

に変えるとOK。



最後の Debug Information Format 設定は、はじめから設定してしまっても良いかもしれない。